package top.frsf.pattern.b_structural.b_proxy.c_cglib;

import org.springframework.cglib.proxy.Enhancer;

/**
 * CGlib代理工厂
 *
 * @author He Kuntao
 * @since 2025/5/13 9:20
 */
public class CGlibProxyFactory {

    /**
     * 获取代理类
     *
     * @param clazz 被代理类
     * @return 代理类
     */
    public static Object getProxy(Class<?> clazz) {
        // 创建动态代理增强类
        Enhancer enhancer = new Enhancer();
        // 设置类加载器
        enhancer.setClassLoader(clazz.getClassLoader());
        // 设置被代理类
        enhancer.setSuperclass(clazz);
        // 设置方法拦截器
        enhancer.setCallback(new CGlibProxy());
        // 创建代理类
        return enhancer.create();
    }
}
